package com.syh.jn.scm.dto.upstream.finance;

import lombok.Data;
import javax.validation.constraints.NotBlank;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 上游销项发票
 */
@Data
public class UpSalesInvoiceMto implements Serializable {
  /**
   * id
   */
  @NotNull(message = "id不能为空")
  private Long id;
  /**
   * 对账单id
   */
  @NotNull(message = "对账单id不能为空")
  private Long statementOfAccountId;
  /**
   * 录单人id
   */
  @NotNull(message = "录单人id不能为空")
  private Long brokerageId;
  /**
   * 开票总额
   */
  private BigDecimal price;
  /**
   * 发票数量
   */
  private Long invoiceCount;
  /**
   * 我方发票基本信息:公司名称
   */
  @NotNull(message = "我方发票基本信息:公司名称不能为空")
  private String ourInvoiceCompanyName;
  /**
   * 我方发票基本信息:收款银行名称
   */
  @NotNull(message = "我方发票基本信息:收款银行名称不能为空")
  private String ourInvoiceBankName;
  /**
   * 我方发票基本信息:收款银行账户
   */
  @NotNull(message = "我方发票基本信息:收款银行账户不能为空")
  private String ourInvoiceBankAccount;
  /**
   * 我方发票基本信息:纳税人识别号
   */
  @NotNull(message = "我方发票基本信息:纳税人识别号不能为空")
  private String ourInvoiceTaxpayerCode;
  /**
   * 对方发票基本信息:公司名称
   */
  @NotNull(message = "对方发票基本信息:公司名称不能为空")
  private String otherPartyInvoiceCompanyName;
  /**
   * 对方发票基本信息:收款银行名称
   */
  @NotNull(message = "对方发票基本信息:收款银行名称不能为空")
  private String otherPartyInvoiceBankName;
  /**
   * 对方发票基本信息:收款银行账户
   */
  @NotNull(message = "对方发票基本信息:收款银行账户不能为空")
  private String otherPartyInvoiceBankAccount;
  /**
   * 对方发票基本信息:纳税人识别号
   */
  @NotNull(message = "对方发票基本信息:纳税人识别号不能为空")
  private String otherPartyInvoiceTaxpayerCode;
  /**
   * 快递单编号
   */
  private String expressListCode;
  /**
   * 快递公司
   */
  private String expressCompany;
  /**
   * 开票日期
   */
  @NotNull(message = "开票日期不能为空")
  private Long billingTimestamp;
}
